# ifndef __Cursors_H_
# define __Cursors_H_

# include "String.h"
# include "PtAlgo.h"

struct CCursor_t {
	point_t pt;

	float fHeading;
	bool bHasHeading;
	bool bHidden;

	COLORREF col, colArrow, colContour;
	int nR;

	string_t strLabel;
	COLORREF colLabel;
	int xLabel0, yLabel0;
	UINT uiAlignMask;

	CComPtr<IPicture> pIcon;
	int xIcon0, yIcon0;

	CComVariant vTag;

	CCursor_t () :
		fHeading (0), bHasHeading (false),
		bHidden (false),
		col (0), colArrow (0xFFFFFF), colContour (-1),
		nR (7),
		xIcon0 (0), yIcon0 (0),
		colLabel (0),
		xLabel0 (3), yLabel0 (3), uiAlignMask (TA_TOP | TA_LEFT)
	{}
};

typedef std::list<CCursor_t> Cursors_t;
extern Cursors_t g_Cursors;

extern COLORREF g_colDefaultCursorColor;

void DrawCursors (HDC _hDC, const rect_t & _rectVisible);
CCursor_t * FindTopmostCursor (int _x, int _y);
void DeleteCursor (CCursor_t & _cursor);

void SetCursorLabelFont (const char * _strFont, int _nSize, bool _bBold, bool _bItalics);
void DestroyCursors ();

# endif // __Cursors_H_